// 创建和更新记录
// 1.以openid为用户id来添加更新删除数据（更改同一条数据）
// 2.包含所有邮卡，更新时间，随机奖品

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init();

const db = cloud.database();
const col = db.collection('lesson');
const _ = db.command;

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()

  // 查询该用户在数据库中的记录
  let user = await col.where({
    '_openid': wxContext.OPENID,
  }).get();

  let type = event.type;

  if( user.data.length == 0 ){
    let words = [
      { name: '邮生活', type: 0, number: 0 },
      { name: '欢乐邮', type: 1, number: 0 },
      { name: '畅快邮', type: 2, number: 0 },
      { name: '悦享邮', type: 3, number: 0 },
    ]

    // 控制随机一个字+1
    words[type].number += 1;

    let data = {
      '_openid': wxContext.OPENID,
      'words': words,
      // 获取今天的日期
      updateTime: getDay(),
      // 可用次数-1
      times: 1,
      prize: null,
      integral: 0,
      prizeGrade: null
    }

    let result = await col.add({
      data: data
    })

    return {
      msg: '添加成功',
      success: true,
      result: result,
      user: user
    }
  }else{
    // 除第一个，更新操作
    user = user.data[0];

    if (user.times <= 0 && user.updateTime == getDay()){
      return {
        msg: '今天次数已用完',
        success: false
       }
    }

    // times 代表剩余次数，在第二天重置
    let times;
    if (user.updateTime != getDay()){
      times = 1;
    }

    // 增加一个
    user.words[type].number += 1;

    let result = await col.where({
      '_openid': wxContext.OPENID,
    }).update({
      data: {
        'words': user.words,
        // 可用次数
        'times': times || _.inc(-1),
        'updateTime': getDay(),
      }
    })

    return {
      msg: '更新成功',
      success: true,
      result: result,
    }
  }
}

function getDay(){
  let d = new Date();
  return d.getFullYear() + '-' + (d.getMonth()+1) + '-' + d.getDate();
}